﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data;
using System.Data.SqlClient;
using IAC_2013.com.iac.util;
using IAC_2013.com.iac.action;
using IAC_2013.com.iac.form;

namespace IAC_2013.Controls
{
    public partial class ctrProduct : UserControl
    {
        private MetroBillCommands _Commands;
        private DataTable tb;

        public ctrProduct()
        {
            InitializeComponent();
            load_unit();
            load_productCategory();
            load_data();
        }

        public void load_unit()
        {
            UnitForm frm = new UnitForm();
            tb = new System.Data.DataTable();
            tb = new UnitAction().actionSearch(frm);
            comboUnit.DataSource = tb;
            comboUnit.DisplayMember = "ten_dv";
            comboUnit.ValueMember = "id_dv";
        }

        public void load_productCategory()
        {
            ProductCategoryForm frm = new ProductCategoryForm();
            tb = new System.Data.DataTable();
            tb = new ProductCategoryAction().searchCategory(frm);
            comboProductCategory.DataSource = tb;
            comboProductCategory.DisplayMember = "ten_loai_sp";
            comboProductCategory.ValueMember = "id_lsp";
        }

        public void load_data()
        {
            ProductForm frm = new ProductForm();
            tb = new System.Data.DataTable();
            tb = new ProductAction().searchProduct(frm);
            grvProduct.DataSource = tb;
        }
        

        public MetroBillCommands Commands
        {
            get { return _Commands; }
            set
            {
                if (value != _Commands)
                {
                    MetroBillCommands oldValue = _Commands;
                    _Commands = value;
                    OnCommandChanged(oldValue, value);
                }
            }
        }

        public void OnCommandChanged(MetroBillCommands oldValue, MetroBillCommands newValue)
        {
            if (newValue != null)
            {
                btBack.Command = newValue.Products.Cancel;
            }
            else
            {
                btBack.Command = null;
            }
        }

        private void btSave_Click(object sender, EventArgs e)
        {
            ProductForm frm = new ProductForm();
            if (txtProductCode.Text == null || txtProductCode.Text.Trim().Equals(""))
            {
                MessageBox.Show("Mã sản phẩm chưa có.");
            }
            if (txtProductName.Text == null || txtProductName.Text.Trim().Equals(""))
            {
                MessageBox.Show("Tên sản phẩm chưa có.");
            }
            frm.productCode = txtProductCode.Text;
            frm.productName = txtProductName.Text;
            frm.productSize = txtProductSize.Text;
            frm.productStandard = txtProductStandard.Text;
            frm.productDescription = txtProductDescription.Text;
            frm.unitId = Int32.Parse(comboUnit.SelectedValue.ToString());
            frm.categoryProductId = Int32.Parse(comboProductCategory.SelectedValue.ToString());
            Boolean checkCode = CommonUtils.checkCode("", txtProductCode.Text, "ma_sp", "sp_san_pham", "add");
            if (checkCode == false)
            {
                MessageBox.Show("Mã sản phẩm đã tồn tại vui lòng nhập mã khác.");
            }
            else
            {
                DialogResult results;
                results = MessageBox.Show("Bạn có chắc muốn ghi lại thông tin?", "Có/Không?", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
                if (results == DialogResult.OK)
                {
                    Boolean checkAdd = new ProductAction().addProduct(frm);
                    if (checkAdd == false)
                    {
                        MessageBox.Show("Ghi dữ liệu không thành công.");
                    }
                }
            }
            load_data();
        }

        private void btEdit_Click(object sender, EventArgs e)
        {
            ProductForm frm = new ProductForm();
            if (txtProductCode.Text == null || txtProductCode.Text.Trim().Equals(""))
            {
                MessageBox.Show("Mã sản phẩm chưa có.");
            }
            if (txtProductName.Text == null || txtProductName.Text.Trim().Equals(""))
            {
                MessageBox.Show("Tên sản phẩm chưa có.");
            }
            if (productId.Text == null || productId.Text.Trim().Equals(""))
            {
                MessageBox.Show("Sản phẩm này chưa có, bạn không thể sửa nó.");
            }
            frm.productId = Int32.Parse(productId.Text);
            frm.productCode = txtProductCode.Text;
            frm.productName = txtProductName.Text;
            frm.productSize = txtProductSize.Text;
            frm.productStandard = txtProductStandard.Text;
            frm.productDescription = txtProductDescription.Text;
            frm.unitId = Int32.Parse(comboUnit.SelectedValue.ToString());
            frm.categoryProductId = Int32.Parse(comboProductCategory.SelectedValue.ToString());
            Boolean checkCode = CommonUtils.checkCode(code.Text, txtProductCode.Text, "ma_sp", "sp_san_pham", "edit");
            if (checkCode == false)
            {
                MessageBox.Show("Mã sản phẩm đã tồn tại vui lòng nhập mã khác.");
            }
            else
            {
                DialogResult result;
                result = MessageBox.Show("Chắc chắn bạn muốn sửa lại thông tin sản phẩm này?", "Có/Không", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
                if (result == DialogResult.OK)
                {
                    Boolean checkEdit = new ProductAction().editProduct(frm);
                    if (checkEdit == false)
                    {
                        MessageBox.Show("Sửa không thành công.");
                    }
                }
            }
            load_data();
        }

        private void btDelete_Click(object sender, EventArgs e)
        {
            ProductForm frm = new ProductForm();
            if (productId.Text == null || productId.Text.Trim().Equals(""))
            {
                MessageBox.Show("Bạn chưa chọn sản phẩm để xóa bỏ.");
            }
            else
            {
                frm.productId = Int32.Parse(productId.Text);
                DialogResult result;
                result = MessageBox.Show("Bạn thực sự muốn xóa sản phẩm này?", "Có/Không", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
                if (result == DialogResult.OK)
                {
                    Boolean checkDelete = new ProductAction().deleteProduct(frm);
                    if (checkDelete == false)
                    {
                        MessageBox.Show("Xóa dữ liệu không thành công!");
                    }
                }
            }
            load_data();
        }

        private void grvProduct_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            int r = grvProduct.CurrentCell.RowIndex;
            productId.Text = grvProduct.Rows[r].Cells[0].Value.ToString();
            code.Text = grvProduct.Rows[r].Cells[1].Value.ToString();
            txtProductCode.Text = grvProduct.Rows[r].Cells[1].Value.ToString();
            txtProductName.Text = grvProduct.Rows[r].Cells[2].Value.ToString();
            txtProductStandard.Text = grvProduct.Rows[r].Cells[3].Value.ToString();
            txtProductSize.Text = grvProduct.Rows[r].Cells[4].Value.ToString();
            txtProductDescription.Text = grvProduct.Rows[r].Cells[5].Value.ToString();
            comboUnit.SelectedItem = grvProduct.Rows[r].Cells[7].Value.ToString();
            comboUnit.SelectedText = grvProduct.Rows[r].Cells[7].Value.ToString();
            comboUnit.SelectedValue = grvProduct.Rows[r].Cells[6].Value.ToString();
            comboProductCategory.SelectedItem = grvProduct.Rows[r].Cells[9].Value.ToString();
            comboProductCategory.SelectedText = grvProduct.Rows[r].Cells[9].Value.ToString();
            comboProductCategory.SelectedValue = grvProduct.Rows[r].Cells[8].Value.ToString();
        }

        private void btSearch_Click(object sender, EventArgs e)
        {
            ProductForm frm = new ProductForm();
            frm.productName = txtProductName.Text;
            frm.productCode = txtProductCode.Text;
            frm.productSize = txtProductSize.Text;
            frm.productStandard = txtProductStandard.Text;
            frm.productDescription = txtProductDescription.Text;
            frm.unitId = Int32.Parse(comboUnit.SelectedValue.ToString());
            frm.categoryProductId = Int32.Parse(comboProductCategory.SelectedValue.ToString());
            tb = new System.Data.DataTable();
            tb = new ProductAction().searchProduct(frm);
            grvProduct.DataSource = tb;
        }

    }
}
